home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / Kino.gbg.bg (BG).ifs < prev    next >
Encoding:
Text File  |  2004-03-20  |  10.2 KB  |  335 lines

  1. // GETINFO SCRIPTING
  2. // kino.gbg.bg (BG) import
  3.  
  4. (***************************************************
  5.  *  Movie importation script for:                  *
  6.  *      Kino.gbg.bg (BG), http://kino.gbg.bg       *
  7.  *      Version 1.1                                *
  8.  *                                                 *
  9.  *  (c) 2003 Alexander Dimitrov aldi@bulgaria.com  *
  10.  *                                                 *
  11.  *  This script is based on 'IMDB (US) import'     *
  12.  *    Antoine Potten    antoine@buypin.com         *
  13.  *    Danny Falkov                                 *
  14.  *    Kai Blankenhorn                              *
  15.  *                                                 *
  16.  *  For use with Ant Movie Catalog 3.4.0           *
  17.  *  www.antp.be/software/moviecatalog              *
  18.  *                                                 *
  19.  *  This program is free software; you can         *
  20.  *  redistribute it and/or modify it under the     *
  21.  *  terms of the GNU General Public License as     *
  22.  *  published by the Free Software Foundation;     *
  23.  *  either version 2 of the License, or (at your   *
  24.  *  option) any later version.                     *
  25.  ***************************************************)
  26.  
  27. program KinoGbg;
  28. var
  29.   MovieName: string;
  30.  
  31. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  32. var
  33.   i: Integer;
  34. begin
  35.   result := -1;
  36.   if StartAt < 0 then
  37.     StartAt := 0;
  38.   for i := StartAt to List.Count-1 do
  39.     if Pos(Pattern, List.GetString(i)) <> 0 then
  40.     begin
  41.       result := i;
  42.       Break;
  43.     end;
  44. end;
  45.  
  46. procedure HTMLStript (var Value :string);
  47. var
  48.   S :string;
  49.   Stoped :boolean;
  50.   i :integer;
  51. begin
  52.   Value := StringReplace(Value, '<BR>', #13#10);
  53.   Value := StringReplace(Value, '<br>', #13#10);
  54.   Value := StringReplace(Value, '<P>', #13#10);
  55.   Value := StringReplace(Value, '<p>', #13#10);
  56.   Value := StringReplace(Value, '<p>', #13#10);
  57.   Value := StringReplace(Value, #13#10+' ', #13#10);
  58.   HTMLRemoveTags(Value);
  59.   while (length(Value) > 0) and (copy(Value, 1, 1) <= ' ') do
  60.     delete(Value, 1, 1);
  61.   while (length(Value) > 0) and (copy(Value, length(Value), 1) <= ' ') do
  62.     delete(Value, length(Value), 1);
  63. end;
  64.  
  65. procedure AnalyzePage(Address: string);
  66. var
  67.   Page: TStringList;
  68.   LineNr: Integer;
  69. begin
  70.   Page := TStringList.Create;
  71.   Page.Text := GetPage(Address);
  72.   if pos('<b>╥┌╨╤┼═┼</b>', Page.Text) = 0 then
  73.   begin
  74.     AnalyzeMoviePage(Page,Address);
  75.   end else
  76.   begin
  77.     PickTreeClear;
  78.     LineNr := 0;
  79.     LineNr := FindLine('<td class="black11" width="451">', Page, LineNr);
  80.     if LineNr > -1 then
  81.     begin
  82.       PickTreeAdd('Movies in kino.gbg.bg', '');
  83.       AddMoviesTitles(Page, LineNr);
  84.     end;
  85.     if PickTreeExec(Address) then
  86.       AnalyzePage(Address);
  87.   end;
  88.   Page.Free;
  89. end;
  90.  
  91. function GetPeople (Page: TStringList; x :string) :string;
  92. var
  93.   Line, Value: string;
  94.   LineNr: Integer;
  95.   BeginPos, EndPos: Integer;
  96. begin
  97.   LineNr := FindLine(x, Page, 0);
  98.   Value := '';
  99.   if LineNr > -1 then
  100.   begin
  101.     Line := Page.GetString(LineNr);
  102.     BeginPos := Pos(x, Line);
  103.     Delete(Line, 1, BeginPos + length(x));
  104.     BeginPos := Pos(':', Line);
  105.     EndPos := Pos('<br>', Line);
  106.     if EndPos = 0 then
  107.       EndPos := length(Line);
  108.     Value := copy(Line, BeginPos + 2, EndPos - BeginPos - 2);
  109.     HTMLDecode(Value);
  110.     HTMLRemoveTags(Value);
  111.   end;
  112.   GetPeople:=Value;
  113. end;
  114.  
  115. procedure AnalyzeMoviePage(Page: TStringList; Address: string);
  116. var
  117.   Line, Value, Value2: string;
  118.   LineNr: Integer;
  119.   BeginPos, EndPos: Integer;
  120. begin
  121.   // Tranleted Title & Original Title
  122.   LineNr := FindLine('<td class="black10"', Page, 0);
  123.   Line := Page.GetString(LineNr);
  124.   if LineNr > -1 then
  125.   begin
  126.     BeginPos := pos('<b>', Line);
  127.     if BeginPos > 0 then
  128.       BeginPos := BeginPos + 3;
  129.     EndPos := pos('<span class="black11"', Line);
  130.     if EndPos = 0 then
  131.       EndPos := Length(Line);
  132.     Value := copy(Line, BeginPos, EndPos - BeginPos - 1);
  133.     HTMLDecode(Value);
  134.     if GetField(fieldTranslatedTitle) = '' then
  135.       SetField(fieldTranslatedTitle, AnsiMixedCase(Value, ''));
  136.     BeginPos := pos('(', Line) + 1;
  137.     if BeginPos > 0 then
  138.     begin
  139.       EndPos := Pos('<span class="black11"', Line);
  140.       if EndPos < BeginPos then
  141.         EndPos := Pos(')', Line);
  142.       Value := copy(Line, BeginPos, EndPos - BeginPos);
  143.       HTMLDecode(Value);
  144.       if GetField(fieldTranslatedTitle) = '' then
  145.         SetField(fieldOriginalTitle, AnsiMixedCase(Value, ''));
  146.     end;
  147.   end;
  148.   
  149.   //Category
  150.   LineNr := FindLine('╞αφ≡:', Page, 0);
  151.   if LineNr > -1 then
  152.   begin
  153.     Line := Page.GetString(LineNr);
  154.     BeginPos := pos('</b> ', Line) + 5;
  155.     EndPos := pos('<br>', Line);
  156.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  157.     HTMLDecode(Value);
  158.     SetField(fieldCategory, Value);
  159.   end;
  160.  
  161.   // Year
  162.   LineNr := FindLine('├εΣΦφα:', Page, 0);
  163.   if LineNr > -1 then
  164.   begin
  165.     Line := Page.GetString(LineNr);
  166.     BeginPos := pos('</b> ', Line) + 5;
  167.     EndPos := pos('<br>', Line);
  168.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  169.     HTMLDecode(Value);
  170.     SetField(fieldYear, Value);
  171.   end;
  172.  
  173.   //Country
  174.   LineNr := FindLine('╧≡εΦτΓεΣ±≥Γε:', Page, 0);
  175.   if LineNr > -1 then
  176.   begin
  177.     Line := Page.GetString(LineNr);
  178.     BeginPos := pos('</b>', Line) + 5;
  179.     EndPos := pos('<br>', Line);
  180.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  181.     HTMLDecode(Value);
  182.     SetField(fieldCountry, Value);
  183.   end;
  184.  
  185.   // Length
  186.   LineNr := FindLine('┬≡σ∞σ≥≡ασφσ:', Page, 0);
  187.   if LineNr > -1 then
  188.   begin
  189.     Line := Page.GetString(LineNr);
  190.     BeginPos := pos('</b>', Line) + 5;
  191.     EndPos := pos(' ∞Φφ≤≥Φ', Line);
  192.     if EndPos = 0 then
  193.       EndPos := Length(Line);
  194.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  195.     SetField(fieldLength, Value);
  196.   end;
  197.  
  198.   // URL
  199.   LineNr := FindLine('╬⌠Φ÷Φαδσφ ±αΘ≥', Page, 0);
  200.   if LineNr > -1 then
  201.   begin
  202.     Line := Page.GetString(LineNr);
  203.     BeginPos := pos('href="http://', Line) + 6;
  204.     EndPos := pos('">╬⌠Φ÷Φαδσφ ±αΘ≥', Line);
  205.     if EndPos = 0 then
  206.       EndPos := Length(Line);
  207.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  208.     SetField(fieldURL, Value);
  209.   end
  210.   else
  211.     SetField(fieldURL,Address);
  212.  
  213.   // Actors
  214.   SetField(fieldActors, GetPeople(Page,'└Ω≥ⁿε≡Φ'));
  215.  
  216.   // Director
  217.   SetField(fieldDirector, GetPeople(Page,'╨σµΦ±ⁿε≡'));
  218.  
  219.   // Producer
  220.   SetField(fieldProducer, GetPeople(Page,'╧≡εΣ≤÷σφ≥'));
  221.  
  222.   // Description
  223.   LineNr := FindLine('╤■µσ≥:', Page, 0);
  224.   if LineNr > -1 then
  225.   begin
  226.     Line := Page.GetString(LineNr);
  227.     BeginPos := pos('╤■µσ≥:', Line) + 11;
  228.     EndPos := pos('<br><br><br>', Line);
  229.     while (EndPos = 0) and (pos('</td>', Line)=0) do begin
  230.       LineNr := LineNr + 1;
  231.       Line := Line + ' ' + Page.GetString(LineNr);
  232.       EndPos := pos('<br><br><br>', Line);
  233.     end;
  234.     EndPos := pos('<br><br><br>', Line);
  235.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  236.     HTMLDecode(Value);
  237.     HTMLStript(Value);
  238.     SetField(fieldDescription, Value);
  239.   end;
  240.  
  241.   // Comments
  242.   LineNr := FindLine('<!-- recenzii -->', Page, 0);
  243.   if LineNr > -1 then
  244.   begin
  245.     PickListClear;
  246.     LineNr := FindLine('<td class="black11">', Page, LineNr);
  247.     while LineNr > -1 do begin
  248.       LineNr := LineNr + 1;
  249.       Line := Page.GetString(LineNr);
  250.       EndPos := pos('</td>', Line);
  251.       while (EndPos = 0) and (pos('<br><br><br>',Line)=0) do begin
  252.         LineNr := LineNr + 1;
  253.         Line := Line + ' ' + Page.GetString(LineNr);
  254.         EndPos := pos('</td>', Line);
  255.       end;
  256.       BeginPos := 1;
  257.       EndPos := pos('<br><br><br>', Line);
  258.       Value := copy(Line, BeginPos, EndPos - BeginPos);
  259.       HTMLDecode(Value);
  260.       HTMLStript(Value);
  261.       if StringReplace(StringReplace(Value,#13#10,''), ' ', '') <> '' then
  262.         PickListAdd(Value);
  263.       LineNr := FindLine('<td class="black11">', Page, LineNr);
  264.     end;
  265.     if PickListExec('Select a comment for "' + MovieName + '"', Value) then
  266.       SetField(fieldComments, Value);
  267.   end;
  268.  
  269.   DisplayResults;
  270. end;
  271.  
  272. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  273. var
  274.   Line: string;
  275.   MovieTitle, MovieAddress: string;
  276.   StartPos: Integer;
  277. begin
  278.   repeat
  279.     LineNr := LineNr + 1;
  280.     Line := Page.GetString(LineNr);
  281.     StartPos := pos('href="index.php?p=archive&filmid', Line);
  282.     if StartPos > 0 then
  283.     begin
  284.       Startpos := Startpos + 6;
  285.       MovieAddress := copy(Line, StartPos, pos('">', Line) - StartPos);
  286.       StartPos := pos('">', Line) + 2;
  287.       MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
  288.       if pos('admin/movies/',Movietitle)=0 then begin
  289.         HTMLDecode(MovieTitle);
  290.         PickTreeAdd(MovieTitle, 'http://kino.gbg.bg/' + MovieAddress);
  291.       end;
  292.     end;
  293.   until pos('<table cellpadding="0" cellspacing="6" border="0">', Line) > 0;
  294. end;
  295.  
  296. begin
  297.   if CheckVersion(3,4,0) then
  298.   begin
  299.     MovieName := GetField(fieldOriginalTitle);
  300.     if MovieName = '' then
  301.       MovieName := GetField(fieldTranslatedTitle);
  302.     if Input('Kino.gbg.bg Import', 'Enter the title of the movie:', MovieName) then
  303.     begin
  304.       AnalyzePage('http://kino.gbg.bg/index.php?p=srch&keyw='+UrlEncode(MovieName)+'&where=movies');
  305.     end;
  306.   end else
  307.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
  308. end.
  309.  
  310. os, pos('">', Line) - StartPos);
  311.       StartPos := pos('">', Line) + 2;
  312.       MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
  313.       if pos('admin/movies/',Movietitle)=0 then begin
  314.         HTMLDecode(Movietitle);
  315.         PickTreeAdd(MovieTitle, 'http://kino.gbg.bg/' + MovieAddress);
  316.       end;
  317.     end;
  318.   until pos('<table cellpadding="0" cellspacing="6" border="0">', Line) > 0;
  319. end;
  320.  
  321. begin
  322.   if CheckVersion(3,4,0) then
  323.   begin
  324.     MovieName := GetField(fieldOriginalTitle);
  325.     if MovieName = '' then
  326.       MovieName := GetField(fieldTranslatedTitle);
  327.     if Input('Kino.gbg.bg Import', 'Enter the title of the movie:', MovieName) then
  328.     begin
  329.       AnalyzePage('http://kino.gbg.bg/index.php?p=srch&keyw='+UrlEncode(MovieName)+'&where=movies');
  330.     end;
  331.   end else
  332.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
  333. end.
  334.  
  335.